package com.company;

/**
 * @author zhf
 * @date 2021/10/14
 */


import java.util.Stack;

/**
 * 使用堆栈解决
 */
public class Bracket {

    public static void main(String[] args) {
        String s = "()[]{}";
        Bracket bracket = new Bracket();
        boolean l = bracket.isValid(s);
        System.out.println( l);
    }

    public boolean isValid(String s) {

        //新建一个栈；
        Stack<Character> stack = new Stack<>();
        for (char c : s.toCharArray()){
            /*
            遍历到左括号，在栈中推入一个右括号
             */
            if (c == '('){
                stack.push(')');
            }
            else if (c == '['){
                stack.push(']');
            }
            else if (c == '{'){
                stack.push('}');
            }
            else if (c == '('){
                stack.push(')');
            }
            /*
            s=()[]{}
             */
            else if (!stack.empty() && stack.peek() == c){
                stack.pop();  //栈顶元素跟遍历到的元素一样就弹出该元素；
            }
            else return false;
            //stack.peek()  返回栈顶元素，但是不出栈。
        }
        return stack.isEmpty();
    }
}
